Вообщем-то часто скрипты пишут для того, чтобы сделать с объектом какие-то действия, которые надо повторять часто и лениво это делать. Так вот нам надо проверить есть ли выделенный объект. Вот так это можно сделать:
WITHOBJECT "CorelDraw.Automation.8"
ON ERROR RESUME NEXT
DIM ObjType AS LONG
ObjType& = .GetObjectType()
IF (ObjType& <= 0) OR (ERRNUM > 0) THEN
retval%=MESSAGEBOX("Not Select Object","Info",1)
END IF
END WITHOBJECT
Здесь ON ERROR RESUME NEXT важен в том плане, что если мы захотим получить тип объекта, а он не выделен, то результатом работы будет ошибка. Программа остановится, а чтобы этого не было мы и написали двигаться всегда вперед. Идея проверки, что объект выделен заключается в том, что мы используем функцию .GetObjectType:
GetObjectType (DRAW) ReturnValue& = .GetObjectType()
Она вернет тип объекта и если его нет, то значение меньше нуля. Вот это мы и проверяем. Но в таком виде работать не удобно, может быть нам придется проверять сотни объектов. Поэтому лучше организовать все это в виде функции вот так:
DECLARE FUNCTION CheckForSelection() AS BOOLEAN
WITHOBJECT "CorelDraw.Automation.8"
IF NOT CheckForSelection() THEN
retval%=MESSAGEBOX("Not Select Object","Info",1)
END IF
FUNCTION CheckForSelection AS BOOLEAN
DIM ObjType AS LONG
ON ERROR RESUME NEXT
ObjType& = .GetObjectType()
IF (ObjType& <= 0) OR (ERRNUM > 0) THEN
ERRNUM = 0
CheckForSelection = FALSE
ELSE
CheckForSelection = TRUE
ENDIF
END FUNCTION
END WITHOBJECT
Сначала функцию с использованием DECLARE нужно объявить и написать код используя FUNCTION и END FUNCTION.